from copy import deepcopy

from flask import jsonify

from common import error

"""
异常处理函数，用于全局捕获未知的异常

function:
    exception_handler: 处理异常的函数
"""


def exception_handler(e: Exception) -> tuple:
    """
    用于进行全局异常处理，方便捕获未知的异常，在运行时注册到app中

    :param e: 需要捕获的异常
    :return: 返回一个元组，第一个值是错误信息的json序列，第二个值是500，表示服务器错误
    """
    err = deepcopy(error.runtime_error)  # 使用深拷贝，防止原来的对象被污染
    err.message = str(e)
    return jsonify(err.dict()), 500
